package com.pub.check;

/**
 *
 * <p>Title:PublicCheck </p>
 *
 * <p>Description:常用的function集合 </p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: ALPHA </p>
 *
 * @author GM Lin,Andy Chen
 * @version 1.0
 */

/**
 * 此 Class 是用來提供一些常用或公用的方法<br>
 * 此物件的方法大多皆為public static 不需再new 即可呼叫使用
 */
public class PublicCheck {
    //private static boolean blnDebug = false; //測試用，正式要改為false

    public PublicCheck() { //建構元
    }


    /**
     * 判斷所輸入的字串是不是零 "0"
     * @param strTemp String
     * @return boolean (若此字串是"0"則回傳true,否則回傳false)
     */
    public static boolean isZero(String strTemp) {
        if (strTemp.trim().equals("0")) { //如果這個字串是零的話
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判斷所輸入的字串是不是空白 ""
     * @param strTemp String
     * @return boolean (若此字串是空白則回傳true,否則回傳false)
     */
    public static boolean isEmpty(String strTemp) {
        if (strTemp.trim().equals("")) { //如果這個字串是空白的話
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判斷所輸入的字串是不是數字 (十進位數字)，但是不包含科學符號
     * @param number String
     * @return boolean (若此字串為數字則回傳true,否則回傳false)
     */
    public static boolean isNumString(String number) {
        boolean tf = false;
        if (number == null || number.trim().length() == 0) {
            return false;
        }
        char ch = number.charAt(0);
        byte circle = 0;
        byte po = 0;
        byte nu = 0;
        if ((ch == '-' || ch == '+') && number.length() == 1) {
            return false;
        }
        if ((ch == '-' || ch == '+') && number.length() > 1) {
            circle = 1;
        }
        for (byte i = circle; i < number.length(); i++) {
            ch = number.charAt(i);
            if ((ch >= '0' && ch <= '9') || ch == '.') {
                if (ch == '.') {
                    po++;
                    if (po > 1) {
                        return false;
                    }
                } else {
                    nu++;
                }
                if (nu > 0) {
                    tf = true;
                }
            } else {
                return false;
            }
        }
        return tf;
    } //isNumString


    /**
     * 判斷所輸入的字串是不是可代表有意義的十進位整數,開頭第一個字元是 + 或 - 視為正確
     * @param number String
     * @return boolean
     */
    public static boolean isIntString(String number) {
        boolean tf = false;
        if (number == null || number.trim().length() == 0) {
            return false;
        }
        number = number.trim();
        char ch = number.charAt(0);
        byte circle = 0;
        if ((ch == '-' || ch == '+') && number.length() == 1) {
            return false;
        }
        if ((ch == '-' || ch == '+') && number.length() > 1) {
            circle = 1;
        }
        for (byte i = circle; i < number.length(); i++) {
            ch = number.charAt(i);
            if (ch >= '0' && ch <= '9') {
                tf = true;
            } else {
                return false;
            }
        }
        return tf;
    } //isIntString

    /**
     * 檢查傳入值是否含有單引號或雙引號，避免資料隱碼的攻擊
     * @param pstrFieldValue String
     * @return boolean
     */
    public static boolean isSQLInjection(String pstrFieldValue){
        return (pstrFieldValue.indexOf("'")>=0 || pstrFieldValue.indexOf("\"")>=0);
    }
}
